import React, { Component } from 'react'
import PubSub from "pubsub-js"
import './index.css'

export default class List extends Component {

  state =  {
    users: [], // 初始化用户信息
    isFirst: true, // 是否为第一次打开页面
    isLoading: false, // 标识是否处于加载中
    err: '',  // 存储请求相关的错误信息
  }

  componentDidMount(){
    this.token = PubSub.subscribe("updateState", (_, stateObj)=>{
      this.setState(stateObj)
    })
  }

  componentWillUnmount(){
    PubSub.unsubscribe(this.token)
  }
  
  render() {
    const {users, isFirst, isLoading,  err} = this.state
    return (
      <div className="row">
        {
          isFirst ? <h2>欢迎使用，请输入关键字，随后点击搜索！</h2> :
          isLoading ? <h2>拼命加载中……</h2> :
          err ? <h2 style={{color: 'red'}}>{err}</h2> :
          users?.length === 0 ? <h2 style={{color: 'red'}}>空空如也！</h2> :
          users.map((user)=>{
            return (
              <div className="card" key={user.id}>
                <a href={user.html_url} target="_blank" rel="noreferrer">
                  <img src={user.avatar_url} style={{width: '100px'}}/>
                </a>
                <p className="card-text">{user.login}</p>
              </div>
            )
          })
        } 
        </div>
    )
  }
}
